"""
seesion 是一种用于在web 应用程序中存储用户会话数据的机制
"""
from django.http import HttpResponse
from datetime import timedelta
def set_session(request):
    # 写入session
    request.session['username'] = 'super'
    request.session['age'] = 18
    
    return HttpResponse("设置session 成功")

def get_session(request):
    # 读取session request.session.get(key, default=None)
    username = request.session.get('username')
    age = request.session.get('age')
    return HttpResponse(f"读取session 成功, 用户名: {username}, 年龄: {age}")

def del_session(request):
    # 清空所有会话值，但保留会话id
    # request.session.clear()
    
    # # 测试是否删除成功
    # username = request.session.get('username', "未设置")

    # 完全清除会话数据，包括会话id
    # request.session.flush()
    
    # # 测试是否删除成功
    # username = request.session.session_key

    # 清除特定的会话值
    del request.session['age'] 
    # 测试是否删除成功
    
    data = {
        'username': request.session.get('username', '未设置'),
        'age': request.session.get('age', '已删除')
    }
    return HttpResponse(f"已经清除所有会话值，删除后的数据:{data}")

# 设置会话的过期时间
def set_session_expiry(request):
    # 设置会话数据
    request.session['token'] = 'abc123xyz'

    # 形式 1：整数秒数(30 分过期)
    # request.session.set_expiry(5)

    # 一天以后过期
    # request.session.set_expiry(timedelta(days=1))
    
    # 关闭浏览器就过期
    request.session.set_expiry(0)
    # 获取过期时间
    expire_date = request.session.get_expiry_date()
    return HttpResponse(f'会话已设置，将在{expire_date}过期')